﻿#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

typedef double Real;


typedef struct
{
	double eps;
}Context;
Context context = { 0 };

int read_int(int* v)
{
	char buf[10000] = { 0 };
	scanf("%s", buf);
	if (strlen(buf) > 4)
		return 0;
	int s = 0;
	char* p = buf;
	while (*p)
	{
		if ('0' <= *p && *p <= '9')
		{
			s = s * 10 + (*p - '0');
			++p;
		}
		else
			return 0;
	}
	*v = s;
	if (1 <= s && s <= 1000)
		return 1;
	else
		return 0;
}

int read_int2(int* v)
{
	char buf[10000] = { 0 };
	getchar();
	gets(buf);
	if (strlen(buf) > 4)
		return 0;
	int s = 0;
	char* p = buf;
	while (*p)
	{
		if ('0' <= *p && *p <= '9')
		{
			s = s * 10 + (*p - '0');
			++p;
		}
		else
			return 0;
	}
	*v = s;
	if (1 <= s && s <= 1000)
		return 1;
	else
		return 0;
}

void read_data(Context* ctx)
{
}


void solve(Context* ctx)
{
	int a, b;
	int va=0, vb=0;
	a = read_int(&va);
	b = read_int2(&vb);
	
	if (a)
		printf("%d", va);
	else
		printf("?");
	printf(" + ");
	if (b)
		printf("%d", vb);
	else
		printf("?");
	printf(" = ");
	if (a && b)
		printf("%d", va + vb);
	else
		printf("?");
	printf("\n");
}

int main()
{
	freopen("D:/Develop/GitRepos/MOOC/浙江大学/数据结构/201906/DataStructure/M2019秋C入门和进阶练习集/7-184.txt", "r", stdin);
	read_data(&context);
	solve(&context);
	return 0;
}
